相信各位讀者對於 This 並不陌生,甚至可以說使用的頻率非常之高,但各位真的明白 This 在不同的位置指的是誰嗎?為了避免一個 This,各自表述 的情境發生,如果概念還很模糊的同學,就讓我們看下去吧!
下面我們會用一些範例程式碼來做說明
var ary = [1, 2, 3];
ary.a = 12;
ary.show = function() {
console.log(this.a); // 12
};
ary.show();
上面的範例,this 會指向到當前 function( 方法 ), 屬於 ary 的物件。
document.onclick = function() {
console.log( this ); // #document
};
而這邊的 this 會指向當前 function( 方法 ),屬於 document 的物件。
function show() {
console.log( this ); // Window
}
show();
這裡的 this 會指向 全域 (window);
上面的範例也等同於下面的寫法
window.show = function() {
console.log( this ); // Window
};
window.show();
看了上述三個範例,大家對於 This 是不是有個基礎的瞭解了呢?
這邊我用一句話來做個總結,影響 This 的是它在哪裡被呼叫,而非在哪裡被宣告
。
接下來,我列舉一些 JavaScript 常用的內建物件
不建議在內建的物件上隨意地增加屬性或方法,否則可能會覆蓋到內建的屬性與方法。
週六下雨下個不停,感覺好悶啊。
參考資料:
Tommy - 深入 JavaScript 核心課程
卡斯柏 - JavaScript 的 this 到底是誰?